পিএইচপি date
()
ফাংশনটি তারিখ এবং/অথবা সময়কে সাজানোর জন্য ব্যবহার করা হয়।
date
()
ফাংশন
পিএইচপি date
()
ফাংশন একটি টাইমস্ট্যাম্পকে পড়ার উপযোগী করে তারিখ এবং সময়ে সাজায়।
kt_satt_skill_example_id=179
প্যারামিটার | বিবরণ |
---|---|
format | আবশ্যক। টাইমস্ট্যাম্প এর ফরম্যাটকে নির্দেশ করে। |
timestamp | ঐচ্ছিক। একটি টাইমস্ট্যাম্পকে নির্দেশ করে। ডিফল্ট হলো বর্তমান তারিখ ও সময়। |
একটি টাইমস্ট্যাম্প হলো ক্যারেক্টারের ধারাবাহিকতা, যা একটি নির্দিষ্ট ইভেন্ট সম্পন্ন হওয়ার পর তারিখ এবং/অথবা সময়কে বর্ণনা করে।
আপনি কিভাবে তারিখের ফরম্যাট করতে চাচ্ছেন তা date
()
ফাংশনের আবশ্যক প্যারামিটার( format) এর মাধ্যমে নির্ধারণ করে দিতে হয়।
এখানে কিছু ক্যারেক্টার দেওয়া হলো যেগুলো সাধারণত তারিখের জন্য ব্যবহার করা হয়ঃ
নিজের ইচ্ছামতো তারিখ এবং সময়কে ফরম্যাট করার জন্য স্পেশাল ক্যারেক্টার যেমনঃ "/", ".", অথবা "-" ব্যবহার করা যায়। নিচের উদাহরণটি অনুশীলন করুন।
নিচের উদাহরণে আজকের তারিখকে তিনটি ভিন্ন সাজে দেখানো হয়েছেঃ
kt_satt_skill_example_id=180
এখানে কিছু ক্যারেক্টার দেওয়া হলো যেগুলো সাধারণত সময়ের জন্য ব্যবহার করা হয়ঃ
নিচের উদাহরণে নির্দিষ্ট ফরম্যাটে বর্তমান সময় আউটপুট নেওয়া হলোঃ
kt_satt_skill_example_id=181
বিঃদ্রঃ পিএইচপি date() ফাংশন আপনার সার্ভারের বর্তমান তারিখ/সময় রিটার্ন করবে!
আপনার ওয়েবসাইটে কপিরাইট বৎসর অটোমেটিক আপডেট রাখার জন্য পিএইচপি date
()
ফাংশন ব্যবহার করুন:
kt_satt_skill_example_id=182
পূর্বের কোডগুলোর মাধ্যমে আপনি হয়তো সঠিক সময় পাননি, এর কারন সম্ভবত আপনি অন্য কোন দেশে আছেন অথবা আপনার সার্ভারের সময় অন্য টাইম জোনে সেট করা আছে।
তাই, আপনি যদি সঠিক সময় পেতে চান, তাহলে আপনার প্রয়োজন মতো নির্দিষ্ট টাইমজোন সেট করে নিন।
নিচের উদাহরণে টাইম জোন "Asia/Dhaka" তে সেট করা হয়েছে এবং তারপর নির্দিষ্ট ফরম্যাটে বর্তমান সময়ের আউটপুট নেওয়া হয়েছেঃ
kt_satt_skill_example_id=183
date
()
ফাংশনের ঐচ্ছিক প্যারামিটার(timestamp) একটি টাইমস্ট্যাম্পকে নির্দেশ করে। আপনি যদি কোন টাইমস্ট্যাম্প নির্দিষ্ট করে দেন, তাহলে বর্তমান তারিখ এবং সময় ব্যবহৃত হবে(উপরের উদাহরণে যেমনটি দেখানো হয়েছে)।
তারিখের জন্য mktime
()
ফাংশন Unix টাইমস্ট্যাম্প রিটার্ন করে। Unix টাইমস্ট্যাম্প Unix Epoch (January 1 1970 00:00:00 GMT) এবং নির্ধারিত সময়ের মধ্যে সেকেন্ডের সংখ্যা ধারণ করে।
নোটঃ Unix কি তা জানার জন্য এই Unix শব্দটির উপর মাউসের কার্সর ধরুন।
kt_satt_skill_example_id=184
নিচের উদাহরণটি mktime
()
ফাংশনের কয়েকটি প্যারমিটার হতে তারিখ এবং সময় রিটার্ন করেঃ
kt_satt_skill_example_id=185
strtotime
()
ফাংশনের সাহায্যে স্ট্রিং থেকে তারিখ তৈরিপিএইচপি strtotime
()
ফাংশন আমাদের কাছে সহজে পাঠ্যোগ্য এমন স্ট্রিংকে Unix টাইমে রুপান্তর করে।
kt_satt_skill_example_id=186
নিচের উদাহরণে strtotime
()
ফাংশন ব্যবহার করে তারিখ ও সময় তৈরি করে দেখানো হলোঃ
kt_satt_skill_example_id=188
স্ট্রিং থেকে তারিখে রুপান্তরের ক্ষেত্রে পিএইচপি অনেক চতুর, তাই আপনি বিভিন্ন ধরনের ভ্যালু অন্তর্ভূক্ত করতে পারেনঃ
kt_satt_skill_example_id=189
strtotime
()
ফাংশনটি শতভাগ প্রত্যাশিত ফলাফল নাও দিতে পারে। তাই এই ফাংশনে স্ট্রিং সরবরাহ করার সময় চেক করে নিন।
নিচের উদাহরণে পরবর্তী ৬টি শুক্রবার কোন কোন তারিখে পড়ে তা দেখানো হয়েছেঃ
kt_satt_skill_example_id=190
নিচের উদাহরণে ৬ই নভেম্বর হতে এখনো কতোদিন বাকি আছে তা আউটপুট দেখাবেঃ
kt_satt_skill_example_id=191
পিএইচপির মাধ্যমে আপনি এক ফাইলের কোড কপি করে অন্য ফাইলে নিতে পারেন। নির্দিষ্ট কোন ফাইল থেকে সকল টেক্সট/কোড/মার্কআপ কপি করে অন্য ফাইলে নেওয়ার জন্য পিএইচপি include
অথবা require
স্টেটমেন্ট ব্যবহার করা হয়। এক্ষেত্রে যে ফাইলের মধ্যে include
স্টেটমেন্ট ব্যবহার করা হয় কপি কোড সেই ফাইলেই সম্পাদিত হয়।
ধরুন আপনি একই পিএইচপি কোড, এইচটিএমএল কোড অথবা টেক্সট কে একাধিক পেজে অন্তর্ভূক্ত করতে চাচ্ছেন তাহলে আপনি অন্তর্ভুক্তির এই পদ্ধতি(include
অথবা require
স্টেটমেন্ট) ব্যবহার করতে পারেন।
সার্ভার আপনার ফাইলকে এক্সিকিউট করার পূর্বেই আপনি include
অথবা require
স্টেটমেন্টের মাধ্যমে এক বা একাধিক পিএইচপি ফাইলের কন্টেন্ট বা কন্টেন্টসমূহ আপনার পিএইচপি ফাইলে অন্তর্ভূক্ত করতে পারেন।
include
অথবা require
স্টেটমেন্ট প্রায় একই অর্থে ব্যবহত হয়, তবে ফাইল বিদ্যমান না থাকলে বা failure এর ক্ষেত্রে পার্থক্য প্রতীয়মানঃ
include স্টেটমেন্ট | require স্টেটমেন্ট |
---|---|
include স্টেটমেন্ট শুধুমাত্র একটি warning দেখাবে (E_WARNING) কিন্তু স্ক্রিপ্টের এক্সিকিউশন বন্ধ করবে না। | require স্টেটমেন্ট fatal error তৈরি করবে (E_COMPILE_ERROR) এবং স্ক্রিপ্টের এক্সিকিউশন বন্ধ করে দিবে। |
সুতরাং অন্তর্ভূক্তকৃত(included) ফাইল মিসিং হওয়া স্বত্তেও আপনি যদি কোড এক্সিকিউশন চালু রাখতে চান এবং ইউজারদেরকে আউটপুট দেখাতে চান তাহলে include
স্টেটমেন্ট ব্যবহার করুন।
অন্যথায় ফ্রেমওয়ার্ক, CMS(Content Manaement System) অথবা অন্য যেকোন জটিল পিএইচপি এপ্লিকেশনের ক্ষেত্রে সর্বদাই require
স্টেটমেন্ট ব্যবহার করুন। যদি দূর্ঘটনাবশত আপনার কোন প্রধান(key) ফাইল মিসিং হয়, তাহলে এটি আপনার এপ্লিকেশনের সিকিউরিটি এবং অখন্ডতার(security and integrity) স্বার্থে কোন কম্প্রোমাইজ করবে না।
ফাইল অন্তর্ভূক্ত(include) করলে কাজ অনেক সাশ্রয় হয়। সুতরাং আপনি চাইলে আপনার ওয়েবসাইটের সবগুলো পেজের জন্য একটি স্ট্যান্ডার্ড হেডার, ফুটার এবং মেনু তৈরি করে নিতে পারেন এবং include
এবং require
স্টেটমেন্ট ব্যবহার করে সকল পেজে যুক্ত করতে পারেন।
মনে করুন, আপনার ওয়েবসাইটের মেনু-বারে কোন তথ্য আপডেট করতে হবে। এর জন্য আপনাকে সবগুলো পেজ আলাদা ভাবে আপডেট করতে হবে না। শুধুমাত্র অন্তর্ভূক্তকৃত(included) ফাইলটি আপডেট করে নিলেই সবগুলো পেজের মেনু-বার আপডেট হয়ে যাবে।
সিনট্যাক্স
kt_satt_skill_example_id=192
মনে করুন, আমাদের একটি স্ট্যান্ডার্ড মেনু ফাইল রয়েছে যার নাম "menu.php":
kt_satt_skill_example_id=193
আমরা আমাদের ওয়েবসাইটের সকল পেজে এই মেনু ফাইলটি ব্যবহার করত চাচ্ছি। নিচের উদাহরণের সাহাযে আমরা এটা করে দেখিয়েছি। এই মেনু ফাইলটি আমরা একটি div
এলিমেন্টের মধ্যে যুক্ত করেছি যেন পরবর্তীতে সিএসএস এর মাধ্যমে খুব সহজেই যেকোনো স্টাইল করতে পারি।
kt_satt_skill_example_id=194
মনে করুন, আমাদের একটি স্ট্যান্ডার্ড ফুটার ফাইল রয়েছে যার নাম "footer.php"।
kt_satt_skill_example_id=195
ফুটার ফাইলকে পেজের মধ্যে অন্তর্ভূক্ত করার জন্য include
স্টেটমেন্ট ব্যবহার করুনঃ
kt_satt_skill_example_id=196
পিএইচপি কোডের মধ্যে ফাইল অন্তর্ভূক্ত করার জন্য require স্টেটমেন্টটিও ব্যবহার করা হয়।
যাইহোক, এদের মধ্যে একটি বড় পার্থক্য বিদ্যমান। ধরুন include স্টেটমেন্টের মাধ্যমে ফাইল অন্তর্ভূক্ত করা হলো এবং কোন কারনে ফাইলটি মিসিং হয়ে গেলো তারপরেও পিএইচপি স্ক্রিপ্ট এর এক্সিকিউশন চালু থাকবেঃ
kt_satt_skill_example_id=197
আমরা যদি একই উদাহরণটিতে require স্টেটমেন্ট ব্যবহার করি, তাহলে echo স্টেটমেন্টের এক্সিকিউশন বন্ধ হয়ে যাবে। কারন আবশ্যক ফাইলটি না পাওয়া গেলে require স্টেটমেন্টটি fatal error রিটার্ন করবেঃ
kt_satt_skill_example_id=199
এপ্লিকেশনের আবশ্যক ফাইলের জন্য require স্টেটমেন্ট ব্যবহার করুন।
অপরদিকে, এপ্লিকেশনের ফাইলট যদি ঐচ্ছিক হয় তাহলে include স্টেটমেন্ট ব্যবহার করুন।
ফাইল হ্যান্ডেলিং যেকোন ওয়েব এপ্লিকেশনেরই একটি গুরুত্বপূর্ণ অংশ। বিভিন্ন কাজের জন্য প্রায়ই আপনাকে ফাইল ওপেন এবং প্রসেস করতে হতে পারে।
ফাইল তৈরি, পড়া, আপলোড এবং মডিফাই বা পরিবর্তন করার জন্য পিএইচপিতে বেশ কয়েকটি ফাংশন রয়েছে।
ফাইল ম্যানিপুলেশনের সময় সতর্ক থাকা উচিৎ!
ফাইল ম্যানিপুলেশন(Manipulation) এর সময় আপনাকে অবশ্যই খুব সতর্ক থাকতে হবে।
কারণ আপনার সামান্য ভুলে অনেক বড় ধরনের ক্ষতি হয়ে যেতে পারে। সাধারন ভূলগুলো হলোঃ ভুল করে সঠিক ফাইল এডিট না করা, অপ্রয়োজনীয় ডেটা দিয়ে হার্ড-ড্রাইভ পূর্ণ করা এবং ভুলবশত কোন ফাইল ডিলেট করে ফেলা।
readfile
()
ফাংশন একটি ফাইলকে পড়ে এবং এটিকে আউটপুট বাফারে(buffer) লিখে প্রকাশ করে।
মনে করুন "abbreviation.txt" নামে আমাদের সার্ভারে একটি টেক্সট ফাইল রয়েছে।
"abbreviation.txt" ফাইল
Wi-Fi = Wireless Fidelity
WiMax = Worldwide Interoperability for Microwave Access
GSM = Global System for Mobile communication
CDMA = Code Division Multiple Access
W-CDMA = Wideband Code Division Multiple Access
AMPS = Advance Mobile Phone System
UMTS = Universal Mobile Telecommunication System
IMT = International Mobile Telecommunication
আমরা পিএইচপি readfile
()
ফাংশন ব্যবহার করে ফাইলটির কন্টেন্ট আউটপুট হিসাবে ব্রাউজারে দেখাবো। এক্ষেত্রে readfile
()
ফাংশন সংশ্লিষ্ট ফাইলটি পড়ে এবং আউটপুটের সাথে ফাইলের সাইজও বাইট সংখ্যায় রিটার্ন করে।
kt_satt_skill_example_id=234
আপনি যখন শুধুমাত্র ফাইল ওপেন করতে এবং এর কন্টেন্ট পড়তে চাইবেন কেবল তখনই readfile
()
ফাংশনটি সবচেয়ে বেশী কার্যকরী হবে।
পরবর্তী অধ্যায়গুলোতে ফাইল হ্যান্ডেলিং সম্মন্ধে আরো ভালো ধারনা দেওয়া হয়েছে।
এই অধ্যায়ে আপনি জানবেন কিভাবে সার্ভারে একটি ফাইল খোলা, পড়া এবং বন্ধ করা যায়।
সার্ভারে ফাইল খোলার সবচেয়ে সহজ এবং উত্তম পদ্ধতি হলো fopen() ফাংশন এর ব্যবহার। ফাইল ওপেন করার ক্ষেত্রে এই ফাংশনটি আপনাকে readfile() ফাংশনের তুলনায় অনেক বেশি অপশন এবং সুবিধা প্রদান করবে।
পূর্বের মত এই অধ্যায়েও আমরা "abbreviation.txt" টেক্সট ফাইলটি ব্যবহার করবোঃ
"abbreviation.txt" ফাইল
Wi-Fi = Wireless Fidelity
WiMax = Worldwide Interoperability for Microwave Access
GSM = Global System for Mobile communication
CDMA = Code Division Multiple Access
W-CDMA = Wideband Code Division Multiple Access
AMPS = Advance Mobile Phone System
UMTS = Universal Mobile Telecommunication System
IMT = International Mobile Telecommunication
fopen() সিনট্যাক্স
kt_satt_skill_example_id=239
প্যারামিটার এর বর্ণনাঃ
fopen
()
ফাংশনের মাধ্যমে যে ফাইলটি ওপেন করা হবে সেটির নাম নির্দেশ করে।নিচের উদাহরণের মাধ্যমে দেখানো হলো fopen
()
ফাংশন ব্যবহার করে কিভাবে একটি ফাইল ওপেন করতে হয় এবং যদি নির্দিষ্ট ফাইলটি ওপেন করা সম্ভব না হয় তাহলে কিভাবে একটি ত্রুটি(error) মেসেজ জেনারেট করতে হয়ঃ
kt_satt_skill_example_id=240
নিম্নের টেবিলে ফাইল ওপেন এর বিভিন্ন মোড তুলে ধরা হলোঃ
মোড | বিবরণ |
---|---|
r | read only মোডে ফাইল ওপেন করে। ফাইল পয়েন্টার ফাইলের একেবারে প্রথম থেকে আরম্ভ হয়। |
w | write only মোডে ফাইল ওপেন করে। বিদ্যমান ফাইলের সকল কন্টেন্ট মুছে ফেলবে অথবা আগে থেকে ফাইল না থাকলে নতুন ফাইল তৈরি করবে। ফাইল পয়েন্টার ফাইলের একেবারে প্রথম থেকে আরম্ভ হয়। |
a | write only মোডে ফাইল ওপেন করে। বিদ্যমান ফাইলের সকল কন্টেন্ট সংরক্ষিত থাকবে। ফাইল পয়েন্টার ফাইলের একেবারে শেষ থেকে আরম্ভ হয়। পূর্বে থেকে ফাইল না থাকলে নতুন ফাইল তৈরি করবে। |
x | write only মোডে নতুন ফাইল তৈরি করে। যদি পূর্বে থেকে ফাইল বিদ্যমান থাকে তাহলে FALSE এবং error রিটার্ন করবে। |
r+ | read/write মোডে ফাইল ওপেন করে। ফাইল পয়েন্টার ফাইলের একেবারে শুরু থেকে আরম্ভ হয়। |
w+ | read/write মোডে ফাইল ওপেন করে। ফাইলে কোন তথ্য থাকলে মুছে যাবে। অথবা আগে থেকে ফাইল না থাকলে নতুন ফাইল তৈরি করে। ফাইল পয়েন্টার ফাইলের একেবারে প্রথম থেকে আরম্ভ হয়। |
a+ | read/write মোডে ফাইল ওপেন করে। ফাইল থেকে পূর্বর তথ্য মুছে যাবে না, বরং নতুন তথ্য সংযোজন হবে। ফাইল পয়েন্টার ফাইলের একেবারে শেষ থেকে আরম্ভ হয়। এক্ষেত্রে আগে থেকে ফাইল না থাকলে নতুন ফাইল তৈরি করবে। |
x+ | read/write মোডে নতুন ফাইল তৈরি করে। যদি পূর্বে থেকে ফাইল বিদ্যমান থাকে তাহলে FALSE এবং error রিটার্ন করবে। |
fread() ফাংশন একটি ওপেন করা ফাইল পড়ে।
fread() সিনট্যাক্স
kt_satt_skill_example_id=242
shrotcode
প্যারামিটার এর বর্ণনাঃ
fread
()
ফাংশনের মাধ্যমে যে ফাইলটি ওপেন করা হবে তার নাম নির্দেশ করে।উদাহরণঃ fread() ফাংশন ব্যবহার করে abbreviation.txt ফাইল এর সম্পূর্ণ ডেটা পড়া
kt_satt_skill_example_id=243
উপরের পিএইচপি কোড "abbreviation.txt" ফাইল এর একেবারে প্রথম থেকে শেষ পর্যন্ত পড়বেঃ
একটি ওপেন করা ফাইল বন্ধ করার জন্য fclose() ফাংশন ব্যবহার করা হয়।
কোন ফাইল এর কাজ শেষ হলে সেটিকে বন্ধ করে দেওয়া উচিৎ। কারণ আপনি নিশ্চয়ই চাইবেন না যে একটি ওপেন ফাইল আপনার সার্ভারে ঘুরাঘুরি করে অযথা মেমোরি দখল করে রাখুক!
fclose() ফাংশন ব্যবহার করে আপনি যেই ফাইলটিকে ক্লোজ করতে চান প্যারামিটার হিসাবে সেই ফাইলের নাম অথবা ভ্যারিয়েবলের নাম লাগবে(যার মধ্যে ফাইলটি রাখা হয়েছে)।
kt_satt_skill_example_id=244
একটি ফাইল থেকে শুধুমাত্র এক লাইন পড়ার জন্য fgets() ফাংশন ব্যবহার করা হয়।
উদাহরণঃ "abbreviation.txt" ফাইলের প্রথম লাইন আউটপুট হিসাবে দেখাবে
kt_satt_skill_example_id=245
বিঃদ্রঃ fgets() ফাংশনকে কল করার পর ফাইল পয়েন্টার পরবর্তী লাইনে অগ্রসর হয়।
eof এর পূর্ণরূপঃ "end-of-file"।
পিএইচপি feof() ফাংশন ফাইল পয়েন্টার ফাইলের শেষে পৌছেছে কিনা চেক করে।
অজানা দৈর্ঘ্য বিশিষ্ট তথ্যকে Loop করার জন্য feof() ফাংশনটি বেশ উপকারী।
উদাহরণfeof() ফাংশনটি "abbreviation.txt" ফাইলের শেষে না যাওয়া পর্যন্ত ফাইলটিকে লাইন বাই লাইন পড়তে থাকবে।
kt_satt_skill_example_id=248
একটি ফাইলের একটি একক ক্যারক্টার বা অক্ষর পড়ার জন্য fgetc() ফাংশন ব্যবহার করা হয়।
নিচের উদাহরণে "abbreviation.txt" ফাইলটিকে ক্যারেক্টার বাই ক্যারেক্টার পড়বে, যতক্ষন না পর্যন্ত শেষ লাইনে পৌছায়ঃ
উদাহরণঃ fgetc() ফাংশনটি "abbreviation.txt" ফাইলের শেষ অক্ষরে না যাওয়া পর্যন্ত ফাইলটিকে ক্যারেক্টার বাই ক্যারেক্টার পড়তে থাকবে।
kt_satt_skill_example_id=250
নোটঃ fgetc() ফাংশনকে কল করার পর ফাইল পয়েন্টার পরবর্তী ক্যারক্টারে অগ্রসর হয়।
এই অধ্যায়ে আমরা শিখবো কিভাবে সার্ভারে ফাইল তৈরি করা যায় এবং লেখা যায়।
পিএইচপি সার্ভারে ফাইল তৈরি করার জন্যও fopen() ফাংশনটি ব্যবহার করা হয়। কিছুটা হতভম্ব হচ্ছেন তাই না? কিন্তু পিএইচপিতে যেই ফাংশন দিয়ে ফাইল ওপেন করা হয় সেটি দিয়ে ফাইল তৈরিও করা যায়।
মনে করুন, আপনি একটি ফাইল ওপেন করার জন্য fopen() ফাংশন ব্যবহার করবেন, কিন্তু ফাইলটি পূর্ব থেকে তৈরি করা নাই। তাহলে এটি আপনার জন্য একটি নতুন ফাইল তৈরি করে দিবে। এটা নির্ভর করবে আপনি কোন মোডে fopen() ফাংশনটি ব্যবহার করছেন। অর্থাৎ আপনি ফাংশন এর mode প্যারামিটারে writting(w) অথবা appending(a) মোড ব্যবহার করছেন কিনা।
নিম্নের উদাহরণে "myFile.txt" নামে একটি ফাইল তৈরি করা হয়েছে। পিএইচপি কোড যে ডিরেক্টোরিতে রয়েছে ফাইলটিও একই ডিরেক্টোরিতে তৈরি হবেঃ
kt_satt_skill_example_id=254
যদি এই কোডগুলো রান করাতে error এর সম্মুখিন হোন, তাহলে সার্ভার হার্ড-ড্রাইভে আপনার পিএইচপি ফাইল এক্সেস অনুমতি আছে কিনা চেক করে নিন।
ফাইলে লেখার জন্য fwrite() ফাংশন ব্যবহার করা হয়।
fwrite() সিনট্যাক্স
kt_satt_skill_example_id=255
প্যারামিটার এর বর্ণনাঃ
fopen
()
ফাংশনের মাধ্যমে যে ফাইলটি ওপেন করা হবে সেটির নাম নির্দেশ করে।নিচের উদাহরণে "newFile.txt" নামে একটি নতুন ফাইলে কিছু নাম লেখা হয়েছেঃ
kt_satt_skill_example_id=256
উপরের প্রোগ্রামে লক্ষ্য করলে দেখবেন, আমরা "newFile.txt" ফাইলটিতে দুই বার লিখেছি। প্রত্যেকবারই আমরা ফাংশন এর মধ্য দিয়ে ফাইল নাম এবং স্ট্রিংযুক্ত $text ভ্যারিয়েবল প্রেরণ করেছি যা প্রথমবার "আজিজুর রহমান" এবং দ্বিতীয়বার "জিহাদুল ইসলাম" ধারন করছিল। লেখা শেষ হওয়ার পর আমরা fclose() ফাংশনের মাধ্যমে ফাইলটি ক্লোজ করে দিয়েছি।
আমাদের "newFile.txt" ফাইলে কিছু তথ্য রয়েছে। এখন আমরা আপনাকে দেখাব, যদি পূর্বে থেকে বিদ্যমান কোন ফাইল লেখার জন্য ওপেন করা হয় তাহলে কি ঘটবে? পূর্বের বিদ্যমান সকল তথ্য মুছে যাবে এবং আমরা পূনরায় নতুন করে লেখা শুরু করবো।
নিচের উদাহরণে আমরা আমাদের বিদ্যমান "newFile.txt" ফাইলটি ওপেন করবো এবং এতে কিছু নতুন তথ্য লিখবোঃ
kt_satt_skill_example_id=257
এই অধ্যায়ে আপনি পিএইচপি ব্যবহার করে সার্ভারে ফাইল আপলোড করা শিখবেন। পিএইচপির সাহায্যে সার্ভারে ফাইল আপলোড করা খুবই সহজ।
যাইহোক, এই সহজ বিষয়টিও আপনার জন্য বিপদ ডেকে আনতে পারে! তাই ফাইল আপলোড এর অনুমতি দেয়ার ক্ষেত্রে সতর্ক থাকুন।
প্রথমতঃ এটি নিশ্চিত করুন যে, ফাইল আপলোড করার জন্য "php.ini" ফাইল কনফিগার করা হয়েছে।
ফাইল আপলোড কনফিগার করার জন্য আপনার "php.ini" ফাইলে file_filelocation লিখে সার্চ করে এটিতে On সেট করুনঃ
file_filelocation = On
দ্বিতীয়তঃ একটি এইচটিএমএল ফরম তৈরি করুন যার মাধ্যমে একজন ইউজার তার পছন্দ মতো ইমেজ আপলোড করতে পারবে।
kt_satt_skill_example_id=259
উপরের এইচটিএমএল ফরমের জন্য কিছু করনীয় বিষয়ঃ
method="post"
এর ব্যবহার নিশ্চিত করুন।enctype="multipart/form-data"
এট্রিবিউটটি ব্যবহার করতে হবে। এই এট্রিবিউট এর মাধ্যমে ফরম সাবমিট এর সময় কন্টেন্ট এর টাইপ নির্ধারণ করা হয়।উপরোক্ত শর্তসমুহ না মানলে ফাইল আপলোড কাজ করবে না।
ইনপুট এলিমেন্টে type="file" এট্রিবিউটটি ব্যবহারের মাধ্যমে ব্রাউজারে একটি বাটন তৈরি হবে যার মাধ্যমে ফাইল সিলেক্ট করা যাবে।
উপরের ফরমটি প্রসেস করার জন্য method="post" এর সাহায্যে "uploadfile.php" ফাইলের কাছে পাঠানো হয়।
আপনার বুঝার সুবিধার্থে নিম্নে "uploadfile.php" ফাইলের কোডসমূহ ধাপে ধাপে দেখানো হয়েছে এবং পরিশেষে সম্পূর্ণ কোড একসাথে লেখা হয়েছে।
ফাইল আপলোড করার কোডগুলো "uploadfile.php" ফাইলে থাকেঃ
kt_satt_skill_example_id=260
পিএইচপি স্ক্রিপ্টের ব্যাখ্যাঃ
নোটঃ যে ডিরেক্টরিতে "uploadfile.php" ফাইলটি রয়েছে, আপনাকে সেখানে "filelocation" নামে নতুন একটি ডিরেক্টরি তৈরি করতে হবে। আপলোডকৃত ফাইলগুলো এই ডিরেক্টরিতে সংরক্ষণ হবে।
এখন আমরা অনেকগুলো সীমাবদ্ধতা যুক্ত করতে পারি।
প্রথমতঃ আমরা যে ফাইলটি আপলোড করবো সেই ফাইলটি "filelocation" ফোল্ডারের মধ্যে আছে কিনা চেক করে নিব। যদি পূর্ব থেকেই ফাইল আপলোড করা থাকে তাহলে একটি error মেসেজ প্রদর্শিত হবে এবং $fileuploadDone এ 0 সেট হবেঃ
kt_satt_skill_example_id=262
আমাদের এইচটিএমএল ফরমের ফাইল ইনপুট ফিল্ডের নাম দেওয়া হয়েছে "fileUpload"।
এখন আমরা ফাইলের সাইজ চেক করবো। ফাইলটি যদি 300kb এর চেয়ে বড় হয় তাহলে একটি error মেসেজ প্রদর্শিত হবে এবং $fileuploadDone এ 0 সেট হবেঃ
kt_satt_skill_example_id=263
নিচের কোডগুলো একজন ইউজারকে শুধুমাত্র JPG, JPEG, PNG এবং GIF ফাইল আপলোড করার অনুমতি দিবে। এগুলো ব্যতীত অন্য টাইপের ফাইল আপলোড করলে $fileuploadDone এ 0 সেট হওয়ার পূর্বেই একটি error মেসেজ প্রদর্শিত হবেঃ
kt_satt_skill_example_id=264
নিম্নে সম্পূর্ণ "uploadfile.php" ফাইল এর কোড দেওয়া হলোঃ
kt_satt_skill_example_id=265
এই অধ্যায়ে আপনি কুকি সম্মন্ধে জানবেন। একজন ইউজারকে আইডেন্টিফাই করতে প্রায়ই কুকি(cookie) ব্যবহার করা হয়।
কুকি হলো একটি ছোট্ট ফাইল। সার্ভার এই ফাইলকে ইউজারের কম্পিউটারে সংস্থাপন(embed) করে রাখে। প্রত্যেকবার ঐ একই কম্পিউটার থেকে ব্রাউজার এর মাধ্যমে যখন সার্ভারে একটি পেজের জন্য রিকুয়েস্ট পাঠানো হয় তখন ঐ কম্পিউটার থেকে পেজ রিকুয়েস্টের পাশাপাশি কুকিটিও সেন্ড হয়।
পিএইচপির সাহায্যে আপনি কুকি ভ্যালু তৈরি করতে পারবেন এবং উদ্ধারও করতে পারবেন।
setcookie() ফাংশনের মাধ্যমে কুকি তৈরি করা হয়।
kt_satt_skill_example_id=270
শুধুমাত্র name প্যারামিটারটি আবশ্যক। অন্যান্য সকল প্যারামিটারগুলো হলো ঐচ্ছিক।
নিম্নের উদাহরনে পিএইচপি কুকি তৈরি করে দেখানো হলোঃ
kt_satt_skill_example_id=272
উদাহরণের ব্যাখ্যা
নোটঃ setcookie() ফাংশনটি অবশ্যই ট্যাগ এর উপরে(আগে) ব্যবহার করতে হবে।
নোটঃ যখন কুকি পাঠানো হয় তখন ভ্যালু স্বয়ংক্রিয়ভাবে URL encoded হয় এবং যখন গ্রহণ করা হয় তখন স্বয়ংক্রিয়ভাবে decoded হবে।
URL encoding প্রতিরোধ করার জন্য setrawcookie() ফাংশনটি ব্যবহার করুন।
একটি কুকির ভ্যালু পরিবর্তন(modify) করার জন্য setcookie() ফাংশন ব্যবহার করে পূনরায় কুকিটিকে সেট করতে হয়।
kt_satt_skill_example_id=273
কুকি ডিলেট করার জন্য setcookie() ফাংশন এর expire প্যারামিটারে মেয়াদ উত্তীর্ণ তারিখ ব্যবহার করুনঃ
kt_satt_skill_example_id=274
নিচের উদাহরণে একটি ছোট php স্ক্রিপ্ট তৈরি করা হয়েছে যা কুকি সক্রিয়(Enable) আছে কিনা চেক করবে।
প্রোগ্রামের প্রথমেই setcookie() ফাংশন ব্যবহার করে একটি কুকি তৈরি করে নেওয়া হয়েছে এবং তারপরে count() ফাংশনের মধ্যে $_COOKIE অ্যারে ভ্যারিয়েবলকে প্যারামিটার হিসাবে ব্যবহার করে কুকি সক্রিয় আছে কিনা চেক করা হয়েছে।
kt_satt_skill_example_id=276
এই অধ্যায়ে আপনি পিএইচপি সেশন সম্মন্ধে জানবেন। সেশন হলো ভ্যারিয়েবলের মধ্যে তথ্য সংরক্ষণ করার একটি উপায় যা একাধিক পেজে ব্যবহার করা যায়।
এই তথ্য গুলো ব্যবহারকারীর কম্পিউটারে সংরক্ষিত হয় না, বরং সার্ভারে সংরক্ষিত হয়।
আপনি যখন একটি এপ্লিকেশন দিয়ে আপনার প্রয়োজনীয় কাজ করতে চান তখন প্রথমেই এটিকে চালু করেন, তারপর এর মধ্যে কিছু কাজ করেন, পরিশেষে এটিকে বন্ধ করে দেন। সেশন অনেকটা এই রকমই।
আপনার কম্পিউটার জানে আপনি কে। এটি এও জানে আপনি কখন এপ্লিকেশনটি চালু করেছেন এবং কখন বন্ধ করেছেন। কিন্তু অনলাইনের সমস্যা হলো ওয়েব সার্ভার জানে না আপনি কে অথবা আপনি কি করতে চান। কারন HTTP এড্রেস এ ব্যবহারকারী(user) সম্পর্কিত কোনো তথ্য থাকে না।
সেশন ভ্যারিয়েবল ব্যবহারকারীর username, name, password ইত্যাদি তথ্য সংরক্ষন করে রাখে যা একাধিক পেজে ব্যবহার করা যায়। একজন ব্যবহারকারী ব্রাউজার বন্ধ করার আগ পর্যন্ত সেশন ভ্যারিয়েবল ডিফল্টভাবে সংশ্লিষ্ট তথ্য সংরক্ষন করে রাখে।
সুতরাং সেশন ভ্যারিয়েবল একজন ব্যবহারকারীর তথ্য সংরক্ষন করে রাখে যা শুধুমাত্র ঐ এপ্লিকেশনে অবস্থিত সকল পেজে ব্যবহার করা যায়।
বিঃদ্রঃ আপনি যদি তথ্যসমূহ স্থায়ীভাবে সংরক্ষন করতে চান তাহলে ডাটাবেসে সংরক্ষন করুন।
session_start
()
ফাংশনের মাধ্যমে একটি সেশন শুরু হয়।
পিএইচপি সুপার গ্লোবাল ভ্যারিয়েবল $_SESSION দ্বারা সেশন ভ্যারিয়েবল গুলোকে সেট করতে হয়।
চলুন "test_session1.php" নামে একটি নতুন পেজ তৈরি করি। এই পেজে আমরা একটি নতুন পিএইচপি সেশন শুরু করবো এবং কিছু সেশন ভেবিয়েবল সেট করবোঃ
shortcode
বিঃদ্রঃ মনে রাখবেন, session_start() ফাংশনটি ডকুমেন্টের প্রথম লাইনে লিখতে হবে।
এখন আমরা "test_session2.php" নামে আরেকটি পেজ তৈরি করবো। এই পেজ থেকে আমরা সেশনের তথ্যসমূহ এক্সেস করবো যা আমরা প্রথমে "test_session1.php" পেজে সেট করেছিলাম।
একটু লক্ষ্য করলে আপনি দেখবেন, সেশন ভেরিয়েবলগুলো প্রতিটি নতুন পৃষ্ঠায় স্বতন্ত্রভাবে অতিক্রম হচ্ছে না, এই জন্য আপনাকে প্রতিটি পেজের প্রথমেই session_start() ফাংশনটি শুরু করতে হবে।
লক্ষ্য করলে আপনি আরও দেখবেন যে, প্রতিটি সেশন ভ্যারিয়েবলের মান সুপার গ্লোবাল ভ্যারিয়েবল $_SESSION এর মধ্যে সংরক্ষিত হয়ঃ
shortcode
একজন ব্যবহারকারীর সবগুলো সেশন ভ্যারিয়েবলের মান দেখার জন্য আপনি print_r($_SESSION); ফাংশন ব্যবহার করতে পারেন।
shortcode
সেশন কিভাবে কাজ করে এবং কীভাবে জানতে পারে যে এটাই আপনি?
বেশীরভাগ সেশনই ইউজার কম্পিউটারে ইউজার এর একটি কী(key) সেট করে যা দেখতে কিছুটা 61n3ika5vtee9ro9lb04rqngf6 এর মত। তারপরে যখন অন্য একটি পেজে সেশনটি ওপেন করা হয়, তখন এটি ইউজার কী এর জন্য কম্পিউটারটিকে স্ক্যান করে। এটি যদি পূর্বের কোনো সেশনের সাথে মিল খুঁজে পায় তাহলে সেটিকে অ্যাক্সেস করে।
আর যদি কোনো মিল খুঁজে না পায় তাহলে একটি নতুন একটি সেশন তৈরি করে।
ওভাররাইট(overwrite) করার মাধ্যমে আপনি সেশন ভ্যারিয়েবল পরিবর্তন করতে পারবেনঃ
shortcode
সকল গ্লোবাল সেশন ভ্যারিয়েবলগুলো রিমুভ এবং বাতিল করতে যথাক্রমে session_unset() এবং session_destroy() ফাংশন ব্যবহার করতে হবেঃ
shortcode
উপরের উদাহরনে session_unset() এবং session_destroy() ফাংশন ব্যবহার করার ফলে সবগুলো সেশন ভ্যারিয়েবল মুছে গেছে, তাই কোড রান করালে ফলাফল হিসাবে কিছুই দেখাবে না।
আরও দেখুন...